/*
 * Projeto Casamento
 * 
 * Versao: 0.0.1
 * Autor: Cristiano Lima
 * Data: 01/11/2012
 * 
 * Copyright (C) 2012-2013
 */
package casamento.controle;


import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import org.primefaces.model.UploadedFile;

import casamento.Bean.ImagenBean;
import casamento.DAO.ImagemDAO;

@ManagedBean(name= "fileUploadController")
@SessionScoped
public class uploadImagem {

	UploadedFile file;
	List<ImagenBean> lista = new ArrayList<ImagenBean>();
	List<ImagenBean> listaImagem = new ArrayList<ImagenBean>();
	StreamedContent imagem;

	public void handleFileUpload(FileUploadEvent event) throws IOException,
			ClassNotFoundException {

		// Instância objetos
		ImagemDAO dao = new ImagemDAO();
		ImagenBean im = new ImagenBean();

		// Cria um arquivo UploadFile, para receber o arquivo do evento
		UploadedFile arq = event.getFile();
		// Transformar a imagem em bytes para salvar em banco de dados
		byte[] bimagem = event.getFile().getContents();
		im.setArquivo(bimagem);
		im.setNome(arq.getFileName());
		dao.inserirImagem(im);

		// Essa parte comentada deve ser usada caso queira salvar
		// o arquivo em um local fisuco do servidor.

		System.out.println(event.getFile().getFileName());
		FacesMessage msg = new FacesMessage("Sucesso ", event.getFile()
				.getFileName() + " foi anexado corretamente.");
		FacesContext.getCurrentInstance().addMessage(null, msg);

	}

	public String listar() throws SQLException, ClassNotFoundException {

		ImagemDAO dao = new ImagemDAO();
		listaImagem = dao.getImagem(1);

		for (ImagenBean i : listaImagem) {

			InputStream is = new ByteArrayInputStream(i.getArquivo());
			imagem = new DefaultStreamedContent(is, "image/png");
		}
		return "..galeria/lista.xhtml";
	}

	public UploadedFile getFile() {
		return file;
	}

	public void setFile(UploadedFile file) {
		this.file = file;
	}

	public List<ImagenBean> getLista() {
		return lista;
	}

	public void setLista(List<ImagenBean> lista) {
		this.lista = lista;
	}

	public List<ImagenBean> getListaImagem() {
		return listaImagem;
	}

	public void setListaImagem(List<ImagenBean> listaImagem) {
		this.listaImagem = listaImagem;
	}

	public StreamedContent getImagem() {
		return imagem;
	}

	public void setImagem(StreamedContent imagem) {
		this.imagem = imagem;
	}

}
